Multicast routing is the forwarding of Internet Protocol (IP) multicast packets based on the Distance Vector Multicast Routing Protocol (DVMRP) and Internet Group Management Protocol (IGMP). The DVMRP protocol is an Internet routing protocol that provides an efficient mechanism to dynamically generate IP multicast delivery trees while preventing multicast traffic from creating duplicate packets and routing loops in a network. A multicast delivery tree is used by a DVMRP router to distribute a multicast stream from a multicast source to multicast clients wishing to receive the stream without flooding the network with duplicate packets and without sending unwanted traffic into a network. Before building a multicast delivery tree, the multicast routers in the network exchange neighbor probe messages on local multicast-capable network interfaces that are configured to run DVMRP. A probe message sent by a given router on a particular interface includes its own IP address and the IP address of the neighbor DVMRP router, if known, from which the given router has received a probe message on the particular interface. In this manner, two neighboring multicast routers confirm their adjacency to each other and establish a peer relationship when each receives a probe message including its own address from the neighbor router. When a neighbor DVMRP router is detected, the local interface on which the DVMRP router is detected is referred to as a branch interface. In the absence of an adjacent DVMRP router, the interface is referred to as a leaf interface.
After a DVMRP router has identified its neighboring DVMRP routers, the router will transmit route report messages on those branch interfaces and accept route report messages from the neighboring routers. The initial route report message includes information on the DVMRP router's local interfaces. As the router learns of the other DVMRP routers in the network, the route report may include more detailed information about the routes reachable through the router and the associated cost metrics, e.g. a hop count. With the received route reports, a router constructs a DVMRP routing table from which the router can make forwarding decisions needed for various nodes. The routing table in conjunction with the cost metrics can be used to determine an optimal transmission path, i.e. a best route to the router from a multicast source. If the route that has already been advertised to a neighbor router later becomes inaccessible, a flash route report is sent indicating that the route is no longer accessible. The route reports are periodically refreshed at a report interval.
Even before the DVMRP router has compiled a complete routing table, the router may distribute a multicast stream to other nodes in the network including other DVMRP routers. Upon receipt of a multicast stream, a DVMRP router first performs a reverse path forwarding (RPF) check in which it determines from the DVMRP routing table whether the stream was received on the interface associated with the best route from the multicast source to the router. If the stream is not received on the associated interface, also referred to as the upstream interface, the packet is filtered to prevent a client in a multi-access network from receiving duplicate packets. If the multicast stream is received on the upstream interface, the DVMRP router is configured to propagate the multicast packets downstream to the outer edges of the network.
Upon receipt, the DVMRP router first broadcasts the multicast stream to branch interfaces associated with dependent routers and leaf interfaces from which the router has received an IGMP join message requesting the multicast stream. A dependent router is an adjacent downstream router that relies on a particular upstream router for receipt of a multicast transmission. If there is more than one upstream path to the source, the DVMRP router with the lowest metric to the source network is selected as the designated forwarder, which then assumes responsibility for forwarding data toward clients in the multi-access network. If there are two or more DVMRP routers with the lowest metric, the router with the lowest IP address is selected. The upstream router and designated forwarder(s) are generally determined for each combination of source and destination networks listed in the router's routing table. A dependent DVMRP router communicates its dependency on the upstream router by sending the upstream router a route report including a cost metric equal to the original cost metric received by the upstream router plus an “infinity,” i.e., 32, value. Upon receipt of the report including a metric between infinity and twice infinity, i.e., 64, the upstream DVMRP router adds the downstream router to a list of dependent routers.
Each DVMRP router broadcasts the multicast stream to its dependent routers until the stream reaches one or more DVMRP routers at the edge of the network. At the edge routers, the multicast stream is transmitted to any multicast group members, i.e. clients, registered in the local group member database. In the absence of any clients, the edge router forwards a “prune” message to the upstream router to terminate the transmission to the particular downstream path. Other downstream DVMRP routers between the source and the router may forward the prune message upstream on the condition that there are no group members on the router leaf interfaces or group members accessible through a dependent router. Upon completion of the pruning, distribution of the multicast stream is limited to an optimal per-source-multicast delivery tree representing the best routes from a source to all members of a multicast group. At any point, a new client can request the multicast stream, causing its edge router to propagate a “graft” message upstream until a DVMRP router in possession of the multicast stream adds the appropriate branch to the multicast delivery tree. The multicast delivery tree is periodically refreshed as prune messages expire and the cycle of broadcasting and pruning repeated.
In order for one or more multicast streams to be efficiently distributed throughout the network without unnecessary duplication, DVMRP routers are generally required to make multicast forwarding decisions based on both the multicast destination IP address as well as the IP address of the multicast server at the source of the multicast stream. The source address in particular may be used to distinguish multicast streams having the same multicast group address but originating from different servers present in the multi-access network. In some multicast routers, however, the source address is ignored and only the destination group address and the incoming interface are used as criteria for routing multicast traffic. If uncorrected, such a router has the potential to cause multicast storms by improperly generating duplicate packets, thereby consuming network bandwidth and burdening network resources. There is therefore a need for a technique allowing such a multicast router to properly interoperate with a multicast network comprising DVMRP routers.